/**
 * Copyright (C) 2022-2023
 * All rights reserved, Designed By www.tonetn.com
 * 注意：
 * 本软件为www.tonetn.com开发研制，未经购买不得使用
 * 购买后可获得全部源代码（禁止转卖、分享、上传到码云、github等开源平台）
 * 一经发现盗用、分享等行为，将追究法律责任，后果自负
 */
package com.xunyin.modules.user.rest;

import com.alibaba.fastjson.JSON;
import com.xunyin.dozer.service.IGenerator;
import com.xunyin.modules.log.Log;
import com.xunyin.modules.aop.ForbidSubmit;
import com.xunyin.modules.user.domain.SysXbuser;
import com.xunyin.modules.user.service.SysXbuserService;
import com.xunyin.modules.user.service.dto.SysXbuserQueryCriteria;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * @author admin
 * @date 2022-10-18
 */
@AllArgsConstructor
@Api(tags = "小程序不同角色（管理员、商家、保洁）的用户表管理")
@RestController
//@RequestMapping("/api/sysXbuser")
@RequestMapping("api")
@Slf4j
public class SysXbuserController {

    private final SysXbuserService sysXbuserService;
    private final IGenerator generator;

    @GetMapping(value = "/sysXbuser")
    @Log("查询小程序不同角色（管理员、商家、保洁）的用户表")
    @ApiOperation("查询小程序不同角色（管理员、商家、保洁）的用户表")
    //@PreAuthorize("@el.check('admin','sysXbuser:list')")
    //@PreAuthorize("hasAnyRole('admin','MAINPART_ALL','MAINPART_SELECT')")
    public ResponseEntity getSysXbusers(SysXbuserQueryCriteria criteria, Pageable pageable) {
        return new ResponseEntity<>(sysXbuserService.queryAll(criteria, pageable), HttpStatus.OK);
    }

    @ForbidSubmit
    @Log("设置用户类型")
    @ApiOperation(value = "设置用户类型")
    //@PostMapping(value = "/setUserType")
    @PutMapping(value = "/sysXbuser")
    //@PreAuthorize("@el.check('admin','sysXbuser:list')")
    public ResponseEntity update(@Validated @RequestBody SysXbuser resources) {
        log.info("param :{}", JSON.toJSON(resources));
        SysXbuser sysXbuser = sysXbuserService.getById(resources.getId());
        //log.info("getIsUsed:{}", JSON.toJSON(sysXbuser.getIsUsed()));
        sysXbuser.setUserType(resources.getUserType());
        //sysXbuserService.saveOrUpdate(sysXbuser);
        sysXbuserService.updateById(sysXbuser);
        return new ResponseEntity(HttpStatus.NO_CONTENT);
        //return new ResponseEntity<>(sysXbuserService.updateById(resources),HttpStatus.CREATED);
    }

/*    @PostMapping
    @Log("新增小程序不同角色（管理员、商家、保洁）的用户表")
    @ApiOperation("新增小程序不同角色（管理员、商家、保洁）的用户表")
    @PreAuthorize("@el.check('admin','sysXbuser:add')")
    public ResponseEntity<Object> create(@Validated @RequestBody SysXbuser resources){
        return new ResponseEntity<>(sysXbuserService.save(resources),HttpStatus.CREATED);
    }*/

/*    @PutMapping
    @Log("修改小程序不同角色（管理员、商家、保洁）的用户表")
    @ApiOperation("修改小程序不同角色（管理员、商家、保洁）的用户表")
    @PreAuthorize("@el.check('admin','sysXbuser:edit')")
    public ResponseEntity<Object> update(@Validated @RequestBody SysXbuser resources){
        sysXbuserService.updateById(resources);
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
    }*/

/*    @Log("删除小程序不同角色（管理员、商家、保洁）的用户表")
    @ApiOperation("删除小程序不同角色（管理员、商家、保洁）的用户表")
    @PreAuthorize("@el.check('admin','sysXbuser:del')")
    @DeleteMapping
    public ResponseEntity<Object> deleteAll(@RequestBody Integer[] ids) {
        Arrays.asList(ids).forEach(id->{
            sysXbuserService.removeById(id);
        });
        return new ResponseEntity<>(HttpStatus.OK);
    }*/
}
